Jak na spravne osetreni DB vyjimek

Otázka od: Ing. Petr Sikola

16. 9. 2004 12:34

Zdravim,
Pouzivam D5Ent, ADO, MSSQL, WXP

Mam serverovou aplikaci, ktera komunikuje s databazi (ADO), potrebuju
odchytnout vyjimku, ze neni spojeni s DB.

Zatim to resim takhle:

 try
// nejaky db dotaz
 except
    on E: EOleException do
    begin
      if (e.ErrorCode and CO_E_OBJNOTCONNECTED) = CO_E_OBJNOTCONNECTED
then
      begin
        dta.ADOConnection.Connected := false;
        WriteDebugLog('neni spojeni s DB');
        TImerDBrefresh.enabled := true;
        exit;
      end;
    end;
  end;

Ale odchytavani pouze CO_E_OBJNOTCONNECTED asi nebude to prave (urcite
jich bude vice).

V podstate by me mozna i stacilo udelat to, ze pokud dojde k preruseni
spojeni s DB tak nastavit ADOConnection.connected na false, coz se samo
automaticky neudela (a pri opetovnem pripojeni databaze musim udelat
manualne connected:=false a connected:=true, aby se spojeni obnovilo)

Takze otazky:
1) jak nejlepe odchytavat DB vyjimky
2) kde sehnat spravne ErrorCode konstaty
3) jak donutit adoconnection, aby pri vypadku spojeni s DB samo
nastavilo connected na false
4) jak odchytavat vyjimky od db dotazu nejak globalne, abzch to nemusel
psat ke kazdemu dotazu zvlast

Diky za odpovedi
Petr Sikola